// 这个模块是封装axios的模块
import axios from 'axios'
// 单独导入loading
import { Loading } from 'element-ui'
// 单独导入router
import router from '@/router'
// 配置axios的基地址
axios.defaults.baseURL = 'http://www.liulongbin.top:3008'
let fullScreenLoading
// 请求拦截器
axios.interceptors.request.use(function (config) {
  // console.log('请求拦截器拦截到了请求发出了')
  // config就是发送请求的配置对象,在这个配置对象中有headers(请求头,可以在这个headers中配置token)
  // console.log(config)
  // 给/my开头的url添加请求头
  if (config.url.startsWith('/my')) {
    config.headers.Authorization = localStorage.getItem('bigevent-token')
  }
  // 开启全屏的loading
  fullScreenLoading = Loading.service({
    // lock: true, // 是否禁用加载中的屏幕滚动
    text: '努力加载中....', // 加载中的文本提示
    spinner: 'el-icon-loading', // 加载中的图标
    background: 'rgba(0, 0, 0, 0.7)' // 遮罩的透明度
  })
  return config
}, function (error) {
  return Promise.reject(error)
})

// 响应拦截器
axios.interceptors.response.use(function (response) {
  // 响应成功后会经过的函数
  // console.log('响应拦截器收到了服务器返回的数据')
  // 关闭全屏的loading
  fullScreenLoading.close()
  return response
}, function (error) {
  // 响应失败会经过这个处理函数, 处理函数中有一个error对象, 该对象中有一个response属性
  // console.dir(error.response)
  // 如果error.response.status是401, 并且error.response.data.code是1说明token异常
  if (error.response.status === 401 && error.response.data.code === 1) {
    // 1.清除无用的token
    localStorage.removeItem('bigevent-token')
    // 2.重新登录
    router.push('/login')
  }
  // console.log('响应失败就会进来这个函数')

  // 关闭全屏的loading
  fullScreenLoading.close() // --暂时先注释掉 等到后期响应失败再开启
  return Promise.reject(error)
})
// 导出配置好的axios
export default axios
